/*
 * Copyright (c) 2008, Yifu Huang
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of SleekIce nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package com.sleekice.core;

/* specs for the game */
public class GameSpecs {
    /* default game specs */
    private static final int DEF_SCREEN_WIDTH = 800;
    private static final int DEF_SCREEN_HEIGHT = 600;
    private static final boolean DEF_SCREEN_CENTERED = true;
    private static final boolean DEF_SCREEN_RESIZABLE = false;
    private static final boolean DEF_SCREEN_SHOW = true;
    private static final boolean DEF_SCREEN_TITLEBAR = false;
    private static final String DEF_TITLE = "SleekIce Game";
    
    /* game specs */
    private double fpsLimit;
    private int fpsAccuracy;
    private int screenWidth;
    private int screenHeight;
    private boolean screenCentered;
    private boolean screenResizable;
    private boolean screenShow;
    private boolean screenTitleBar;
    private String title;
    
    public GameSpecs() {
        /* use default values */
        fpsLimit = FpsHandler.DEF_FPS_LIMIT;
        fpsAccuracy = FpsHandler.DEF_FPS_ACCURACY;
        screenWidth = DEF_SCREEN_WIDTH;
        screenHeight = DEF_SCREEN_HEIGHT;
        screenCentered = DEF_SCREEN_CENTERED;
        screenResizable = DEF_SCREEN_RESIZABLE;
        screenShow = DEF_SCREEN_SHOW;
        screenTitleBar = DEF_SCREEN_TITLEBAR;
        title = DEF_TITLE;
    }
    
    public int getFPSAccuracy() {
        return fpsAccuracy;
    }
    
    public double getFPSLimit() {
        return fpsLimit;
    }
    
    public int getScreenHeight() {
        return screenHeight;
    }
    
    public boolean getScreenCentered() {
        return screenCentered;
    }
    
    public boolean getScreenResizable() {
        return screenResizable;
    }
    
    public boolean getScreenShow() {
        return screenShow;
    }
    
    public boolean getScreenTitleBar() {
        return screenTitleBar;
    }
    
    public int getScreenWidth() {
        return screenWidth;
    }
    
    public String getTitle() {
        return title;
    }
    
    public void setFPSAccuracy(int accuracy) {
        fpsAccuracy = accuracy;
    }
    
    public void setFPSLimit(double fps) {
        fpsLimit = fps;
    }
    
    public void setScreenCentered(boolean centered) {
        screenCentered = centered;
    }
    
    public void setScreenDimensions(int screenWidth, int screenHeight) {
        this.screenWidth = screenWidth;
        this.screenHeight = screenHeight;
    }
    
    public void setScreenResizable(boolean resizable) {
       screenResizable = resizable;
    }
    
    public void setScreenShow(boolean show) {
       screenShow = show;
    }
    
    public void setScreenTitleBar(boolean titleBar) {
        screenTitleBar = titleBar;
    }
    
    public void setTitle(String title) {
        this.title = title;
    }
}
